#pragma once

#include "InputComponent.h"
#include "EnginePointer.h"
#include "CenterCameraComponent.h"
#include "IEngineComponentCollection.h"

#pragma comment(linker, "/INCLUDE:??0CameraInputComponent@@QAE@XZ")

class CameraInputComponent : public InputComponent
{
public:
	CameraInputComponent();
	CameraInputComponent(long long int cameraId);
	~CameraInputComponent(void);

	void setCameraId(long long int cameraId);

	void getHoldBindings(BYTE** bindings, DWORD* nBindings);
	void keyHold(BYTE key, LONGLONG timeElapsed);

	void Initialize(EnginePointer<IEngineComponentCollection> components);

	void Serialize(EnginePointer<ISerializerWriteContext>& context, char* name);
	static IEngineComponent* Deserialize(EnginePointer<ISerializerReadContext>& context);

	AUTO_SIZE;
private:
	long long int cameraId;
	EnginePointer<CenterCameraComponent> camera;
	static BYTE bindings[11];
};
